using RAG.Application.Dtos.Role;

namespace RAG.Application.Services.Interfaces;

public interface IRoleService
{
    // 获取所有角色
    Task<IEnumerable<RoleDto>> GetAllRolesAsync();
    
    // 根据ID获取角色
    Task<RoleDto?> GetRoleByIdAsync(Guid id);
    
    // 根据角色名称获取角色
    Task<RoleDto?> GetRoleByNameAsync(string roleName);
    
    // 创建角色
    Task<RoleDto> CreateRoleAsync(RoleDto roleDto);
    
    // 更新角色
    Task<RoleDto> UpdateRoleAsync(Guid id, RoleDto roleDto);
    
    // 删除角色
    Task<bool> DeleteRoleAsync(Guid id);
    
    // 为角色分配权限
    Task<bool> AssignPermissionsToRoleAsync(Guid roleId, List<string> permissionNames);
    
    // 从角色移除权限
    Task<bool> RemovePermissionsFromRoleAsync(Guid roleId, List<string> permissionNames);
} 